PL/SQL-এ ফাংশন এবং প্রোসিডিউর ব্যবহার করার সময় প্যারামিটার পাস করা হয়, যা ইনপুট এবং আউটপুট ডেটা প্রসেস করতে সাহায্য করে। এই প্যারামিটারগুলো তিনটি প্রধান মোডে থাকে: IN, OUT, এবং IN OUT। এই মোডগুলো ফাংশন বা প্রোসিডিউরের মধ্যে ডেটা স্থানান্তর এবং ব্যবহারের প্রক্রিয়া নির্ধারণ করে।
১. IN Parameter Mode
IN প্যারামিটার হলো ইনপুট প্যারামিটার। এটি ব্যবহারকারী বা কলিং প্রোগ্রাম থেকে একটি মান গ্রহণ করে এবং তা ফাংশন বা প্রোসিডিউরে পাস করা হয়। IN প্যারামিটারগুলি শুধুমাত্র পড়ার জন্য ব্যবহৃত হয়, এর মান পরিবর্তন করা সম্ভব নয়।
উদাহরণ:
CREATE OR REPLACE PROCEDURE GetEmployeeSalary (
emp_id IN NUMBER, -- IN প্যারামিটার
salary OUT NUMBER -- OUT প্যারামিটার
) IS
BEGIN
-- IN প্যারামিটার emp_id ব্যবহার করে employee টেবিল থেকে salary বের করা হচ্ছে
SELECT employee_salary
INTO salary
FROM employees
WHERE employee_id = emp_id;
END;
এখানে, emp_id প্যারামিটারটি একটি IN প্যারামিটার, যা কেবলমাত্র পড়ার জন্য ব্যবহৃত হয়। এটি প্রোসিডিউরের ভিতরে পরিবর্তিত হয় না।
২. OUT Parameter Mode
OUT প্যারামিটার হলো আউটপুট প্যারামিটার। এটি ফাংশন বা প্রোসিডিউরের মাধ্যমে আউটপুট মান ফিরিয়ে দেয়। OUT প্যারামিটারটি ইনপুট হিসেবে ব্যবহার করা যায় না, শুধুমাত্র এটি প্রোগ্রাম বা ফাংশনের আউটপুট হিসেবে ব্যবহৃত হয়।
উদাহরণ:
CREATE OR REPLACE PROCEDURE GetEmployeeSalary (
emp_id IN NUMBER, -- IN প্যারামিটার
salary OUT NUMBER -- OUT প্যারামিটার
) IS
BEGIN
-- employee_id এর ভিত্তিতে salary বের করা এবং OUT প্যারামিটার salary তে সেট করা
SELECT employee_salary
INTO salary
FROM employees
WHERE employee_id = emp_id;
END;
এখানে, salary প্যারামিটারটি একটি OUT প্যারামিটার, যা প্রোগ্রামের বাইরে ফাংশন বা প্রোসিডিউরের মাধ্যমে আউটপুট হিসাবে ফেরত দেওয়া হয়। এই প্যারামিটারটির মান ফাংশন বা প্রোসিডিউরের ভিতরে সেট করা হয়।
৩. IN OUT Parameter Mode
IN OUT প্যারামিটার হলো দ্বৈত (দ্বৈত উদ্দেশ্য) প্যারামিটার, যা ইনপুট এবং আউটপুট উভয় কাজ করতে পারে। এটি ফাংশন বা প্রোসিডিউরে পাস করার সময় একটি মান গ্রহণ করে এবং সেই মানটি পরিবর্তন করতে পারে এবং সেই পরিবর্তিত মানটি আউটপুট হিসেবে ফিরে পাঠানো হয়।
উদাহরণ:
CREATE OR REPLACE PROCEDURE UpdateEmployeeSalary (
emp_id IN NUMBER, -- IN প্যারামিটার
new_salary IN OUT NUMBER -- IN OUT প্যারামিটার
) IS
BEGIN
-- salary আপডেট করার পূর্বে, প্যারামিটার new_salary পড়া হবে
SELECT employee_salary
INTO new_salary
FROM employees
WHERE employee_id = emp_id;
-- salary আপডেট করা হবে এবং new_salary প্যারামিটারটি পরিবর্তিত হবে
UPDATE employees
SET employee_salary = new_salary
WHERE employee_id = emp_id;
-- আপডেট করা salary আউটপুট হিসেবে প্রেরণ করা হচ্ছে
DBMS_OUTPUT.PUT_LINE('Updated Salary: ' || new_salary);
END;
এখানে, new_salary প্যারামিটারটি একটি IN OUT প্যারামিটার। এটি প্রথমে IN হিসাবে ব্যবহৃত হয়, যেখানে পুরানো মানটি পাস করা হয়। তারপর, এটি OUT হিসাবে ব্যবহৃত হয়, যেখানে এর মান পরিবর্তিত হয়ে প্রোগ্রাম থেকে ফেরত আসে।
IN, OUT, এবং IN OUT প্যারামিটার মোডের পার্থক্য:
| মোড | কাজ | প্যারামিটার পরিবর্তন | ব্যবহারের উদাহরণ |
|---|---|---|---|
| IN | ইনপুট প্যারামিটার, মান গ্রহণ করে | পরিবর্তন করা যায় না | emp_id IN NUMBER |
| OUT | আউটপুট প্যারামিটার, মান প্রদান করে | পরিবর্তন করা যায় | salary OUT NUMBER |
| IN OUT | ইনপুট এবং আউটপুট, মান গ্রহণ এবং প্রদান | পরিবর্তন করা যায় | new_salary IN OUT NUMBER |
সারাংশ:
PL/SQL-এ IN, OUT, এবং IN OUT প্যারামিটারগুলো ফাংশন বা প্রোসিডিউরকে ভিন্নভাবে ডেটা প্রক্রিয়া করতে সহায়ক। IN প্যারামিটারটি কেবলমাত্র ইনপুট হিসেবে ব্যবহৃত হয়, OUT প্যারামিটারটি কেবলমাত্র আউটপুট হিসেবে ব্যবহৃত হয়, এবং IN OUT প্যারামিটারটি ইনপুট এবং আউটপুট উভয় কাজ করতে পারে, যার মান প্রোগ্রাম চলাকালীন সময় পরিবর্তন করা যায়।
Read more